package com.yanqu.road.entity.activity.goddess;

import com.yanqu.road.entity.DataObject;
import com.yanqu.road.entity.FieldTypeAnnotation;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@FieldTypeAnnotation(tableName = "t_u_activity_goddess_user_data")
public class GoddessUserData extends DataObject {

    @FieldTypeAnnotation(desc = "活动ID", select = true, update = true)
    private int activityId;

    @FieldTypeAnnotation(desc = "用户ID", select = true, update = true)
    private long userId;

    @FieldTypeAnnotation(desc = "体力")
    private int energy;

    @FieldTypeAnnotation(desc = "积分")
    private long score;

    @FieldTypeAnnotation(desc = "上次体力恢复时间")
    private long lastEnergyRecTime;

    @FieldTypeAnnotation(desc = "补天格子点数")
    private long cellPoint;

    @FieldTypeAnnotation(desc = "过关数")
    private int passMissNum;

    @FieldTypeAnnotation(desc = "补天格子")
    private List<GoddessCell> cellList;

    @FieldTypeAnnotation(desc = "五彩石")
    private Map<Integer, GoddessColorStone> colorStoneMap;

    @FieldTypeAnnotation(desc = "阴仪石")
    private List<GoddessYinYangStone>  yinStoneList;

    @FieldTypeAnnotation(desc = "阳仪石")
    private List<GoddessYinYangStone> yangStoneList;

    @FieldTypeAnnotation(desc = "人类数量")
    private long humanNum;

    @FieldTypeAnnotation(desc = "纪元")
    private int era;

    @FieldTypeAnnotation(desc = "造人次数/总年数")
    private int makeYear;

    @FieldTypeAnnotation(desc = "每一年及其他数据")
    private GoddessYearStatus yearStatus;

    @FieldTypeAnnotation(desc = "人类小人")
    private Map<Integer, Integer> peoMap = new HashMap<>();

    @FieldTypeAnnotation(desc = "纪元历史")
    private Map<Integer, List<GoddessEraHistory>> historyMap;

    //最高补天数据
    @FieldTypeAnnotation(desc = "补天格子（上榜时的数据）")
    private List<GoddessCell> rankCellList = new ArrayList<>();

    @FieldTypeAnnotation(desc = "五彩石（上榜时的数据）")
    private Map<Integer, GoddessColorStone> rankColorStoneMap = new HashMap<>();

    @FieldTypeAnnotation(desc = "阴仪石（上榜时的数据）")
    private List<GoddessYinYangStone>  rankYinStoneList = new ArrayList<>();

    @FieldTypeAnnotation(desc = "阳仪石（上榜时的数据）")
    private List<GoddessYinYangStone> rankYangStoneList = new ArrayList<>();

    @FieldTypeAnnotation(desc = "纪元（上榜时的数据）")
    private int rankEra;

    @FieldTypeAnnotation(desc = "补天格子点数（上榜时的数据）")
    private long rankCellPoint;


    public int getActivityId() {
        return activityId;
    }

    public void setActivityId(int activityId) {
        this.activityId = activityId;
    }

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public int getEnergy() {
        return energy;
    }

    public void setEnergy(int energy) {
        if(this.energy != energy) {
            this.energy = energy;
            setUpdateOption();
        }
    }

    public long getScore() {
        return score;
    }

    public void setScore(long score) {
        if(this.score != score) {
            this.score = score;
            setUpdateOption();
        }
    }

    public long getLastEnergyRecTime() {
        return lastEnergyRecTime;
    }

    public void setLastEnergyRecTime(long lastEnergyRecTime) {
        if(this.lastEnergyRecTime != lastEnergyRecTime) {
            this.lastEnergyRecTime = lastEnergyRecTime;
            setUpdateOption();
        }
    }

    public long getCellPoint() {
        return cellPoint;
    }

    public void setCellPoint(long cellPoint) {
        if(this.cellPoint != cellPoint) {
            this.cellPoint = cellPoint;
            setUpdateOption();
        }
    }

    public int getPassMissNum() {
        return passMissNum;
    }

    public void setPassMissNum(int passMissNum) {
        if(this.passMissNum != passMissNum) {
            this.passMissNum = passMissNum;
            setUpdateOption();
        }
    }

    public List<GoddessCell> getCellList() {
        return cellList;
    }

    public void setCellList(List<GoddessCell> cellList) {
        if(this.cellList != cellList) {
            this.cellList = cellList;
            setUpdateOption();
        }
    }

    public Map<Integer, GoddessColorStone> getColorStoneMap() {
        return colorStoneMap;
    }

    public void setColorStoneMap(Map<Integer, GoddessColorStone> colorStoneMap) {
        if(this.colorStoneMap != colorStoneMap) {
            this.colorStoneMap = colorStoneMap;
            setUpdateOption();
        }
    }

    public List<GoddessYinYangStone> getYinStoneList() {
        return yinStoneList;
    }

    public void setYinStoneList(List<GoddessYinYangStone> yinStoneList) {
        this.yinStoneList = yinStoneList;
    }

    public List<GoddessYinYangStone> getYangStoneList() {
        return yangStoneList;
    }

    public void setYangStoneList(List<GoddessYinYangStone> yangStoneList) {
        this.yangStoneList = yangStoneList;
    }

    public long getHumanNum() {
        return humanNum;
    }

    public void setHumanNum(long humanNum) {
        if(this.humanNum != humanNum) {
            this.humanNum = humanNum;
            setUpdateOption();
        }
    }

    public int getEra() {
        return era;
    }

    public void setEra(int era) {
        if(this.era != era) {
            this.era = era;
            setUpdateOption();
        }
    }

    public int getMakeYear() {
        return makeYear;
    }

    public void setMakeYear(int makeYear) {
        if(this.makeYear != makeYear) {
            this.makeYear = makeYear;
            setUpdateOption();
        }
    }

    public GoddessYearStatus getYearStatus() {
        return yearStatus;
    }

    public void setYearStatus(GoddessYearStatus yearStatus) {
        if(this.yearStatus != yearStatus) {
            this.yearStatus = yearStatus;
            setUpdateOption();
        }
    }

    public Map<Integer, Integer> getPeoMap() {
        return peoMap;
    }

    public void setPeoMap(Map<Integer, Integer> peoMap) {
        this.peoMap = peoMap;
        setUpdateOption();
    }

    public Map<Integer, List<GoddessEraHistory>> getHistoryMap() {
        return historyMap;
    }

    public void setHistoryMap(Map<Integer, List<GoddessEraHistory>> historyMap) {
        this.historyMap = historyMap;
        setUpdateOption();
    }

    public List<GoddessCell> getRankCellList() {
        return rankCellList;
    }

    public void setRankCellList(List<GoddessCell> rankCellList) {
        this.rankCellList = rankCellList;
    }

    public Map<Integer, GoddessColorStone> getRankColorStoneMap() {
        return rankColorStoneMap;
    }

    public void setRankColorStoneMap(Map<Integer, GoddessColorStone> rankColorStoneMap) {
        this.rankColorStoneMap = rankColorStoneMap;
    }

    public List<GoddessYinYangStone> getRankYinStoneList() {
        return rankYinStoneList;
    }

    public void setRankYinStoneList(List<GoddessYinYangStone> rankYinStoneList) {
        this.rankYinStoneList = rankYinStoneList;
    }

    public List<GoddessYinYangStone> getRankYangStoneList() {
        return rankYangStoneList;
    }

    public void setRankYangStoneList(List<GoddessYinYangStone> rankYangStoneList) {
        this.rankYangStoneList = rankYangStoneList;
    }

    public int getRankEra() {
        return rankEra;
    }

    public void setRankEra(int rankEra) {
        if(this.rankEra != rankEra) {
            this.rankEra = rankEra;
            setUpdateOption();
        }
    }

    public long getRankCellPoint() {
        return rankCellPoint;
    }

    public void setRankCellPoint(long rankCellPoint) {
        if(this.rankCellPoint != rankCellPoint) {
            this.rankCellPoint = rankCellPoint;
            setUpdateOption();
        }
    }
}
